﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;



namespace ConsoleApplication1
{
    /// <summary>
    /// 单例模式简单实现
    /// </summary>
    public class MySingLeton2
    {
        //******************************
        /*
         * 创建某个类型的第一个实例时所做的操作顺序：
         * (1): 静态变量设置为0
         * (2): 执行静态变量初始化构造器
         * (3): 执行基类的静态构造函数
         * (4): 执行静态构造函数
         * (5): 实例变量设置为0
         * (6): 执行实例变量初始化构造器
         * (7): 执行基类中合适的实例构造函数
         * (8): 执行实例构造函数
         * 
         * 同样类型的第二个以及以后的实例将从第五步开始执行，
         * 因为类的构造函数仅会执行一次。
         */

        //*****************************

        private static readonly MySingLeton2 _theOneOnlyOnly = null;
        static MySingLeton2()
        {

            try
            {
                _theOneOnlyOnly = new MySingLeton2();
            }
            catch
            {

                //Attempt recovery here
            }
        }
        public static MySingLeton2 TheOnly
        {
            get
            {
                return _theOneOnlyOnly;
            }
        }

        private MySingLeton2()
        {

        }



        //remainder elided
    }
}
